1. Field of the Invention
The present invention relates to computer systems and methods in which data resources are shared among concurrent data consumers while preserving data integrity and consistency relative to each consumer. More particularly, the invention concerns a concurrency implementation wherein a transactional memory system operates in conjunction with a mutual exclusion mechanism known as “read-copy update.”
2. Description of the Prior Art
By way of background, transactional memory (TM) and read-copy update (RCU) both provide techniques for concurrent programming, each with various advantages and disadvantages. A single programming system may want to support both techniques. In particular, the system may want to use TM transactions to modify data while RCU readers read the same data. A combination of these two techniques could choose to present many different semantics. For some algorithms, an RCU reader can cope with uncommitted data (data that a transaction has written but not yet committed). However, previous work on combining transactions and RCU readers has required that an RCU reader may only see uncommitted data once the transaction has reached a point where it must commit, and cannot fail and roll back. Otherwise, rolling back a transaction may free memory allocated during the transaction, and thus cause the RCU reader to access an object that no longer exists, generating a fault or a difficult-to-detect error. The present invention allows readers to access uncommitted data that may disappear when a transaction rolls back.